import axios from 'axios'
import auth from '@/utils/auth.js'
import router from '@/router'
import jsonBig from 'json-bigint'
// axios基准路径
axios.defaults.baseURL = 'http://ttapi.research.itcast.cn/mp/v1_0'
// 配置请求头
// axios.defaults.headers.Authorization = `Bearer ${auth.getUser().token}`


// 设置请求拦截器,实时获取token
axios.interceptors.request.use(function(config){
    // 获取token
    const token = auth.getUser().token;
    // 配置token
    if(token) config.headers.Authorization = `Bearer ${token}`
    return config;
},function(error){
    return Promise.reject(error)
})
// 配置响应数据
axios.defaults.transformResponse = [(data) => {
    // 使用jsonbig进行数字转换

    // trycatch 抛出错误,防止data为json以外格式或为null
    try{
        return jsonBig.parse(data); 
    }catch(e){
        // data出现错误,返回未转换的data数据
        return data;
    }
    
}]
// 设置响应拦截器,检验token是否错误或过期
axios.interceptors.response.use((res)=>{
    return res;
},error=>{
    // 判断token,失效时拦截
    if(error.response && error.response.status === 401){
        router.push('/login')
        return alert('登录过期,请重新登录')
    }
    return  Promise.reject(error)   
})
export default axios




